package nidea;
import java.sql.*;
import java.sql.ResultSet;
/**
 * 
 * @author Deskalsoft
 */
public class Idea {
    private int idIdea; 
    private int IdProblema;
    private String solucion;
    private int idCreativo;
    /**
     * Constructor de la clase idea
     */
    public Idea(){
    }
    /**
     * Constructor de la clase Idea inicializa todos los valores de la idea publicada por un creativo
     * @param id contiene el identificador de la idea
     * @param prob contiene el identificador del problema
     * @param sol contiene la solucion al problema
     * @param creat contiene el identificador del creativo
     */
    public Idea(int id, int prob, String sol,int creat ){
        idIdea = id; 
        IdProblema = prob;
        solucion = sol;
        idCreativo = creat;
    }
    /**
     * Método publicarIdea inserta una nueva idea en la base de datos
     * @param idProblema es el identificador del problema 
     * @param idCreativo es el identificador del creativo 
     * @param solucion es la solucion al problema
     * @return
     */
    public Idea publicarIdea (int idProblema, int idCreativo, String solucion) {
        int ididea= indice();
        Idea i = null ;
        String cadena;
        try{
            DBConexion conexion = new DBConexion();
            conexion.abrirConexion();
            String sql = "insert into ideabd (ididea , idproblema , idcreativo , solucion ) VALUES ("+ididea+","+ idProblema +","+idCreativo+",'"+solucion+"');";
            Statement stmt = conexion.con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            int jaja = stmt.executeUpdate(sql);
            sql = "select * from ideabd where ididea=" +ididea+";";
            ResultSet resultado = stmt.executeQuery(sql);
            if(resultado.next()){
                i = new Idea(resultado.getInt("ididea"),resultado.getInt("idproblema"), resultado.getString("solucion"),resultado.getInt("idcreativo"));
            }
            conexion.cerrarConexion();
        } catch(Exception e){
            cadena="Error de conexion,favor de intentar mas tarde";
        }        
        return i;
    }
    /**
     * Nos da el inice disponible para insertar la nueva idea en la base de datos
     * @return int
     */
    public int indice(){
        String error;
        int i = 1;     
        try{
            DBConexion cp = new DBConexion();            
            String sql = "SELECT ididea FROM ideabd ORDER BY ididea;";            
            ResultSet resultado=cp.getRS(sql);            
            while(resultado.next()){
                if(i != resultado.getInt("ididea")){
                    return i;
                }
                i++;
            }
            cp.cerrarConexion();
        }catch(Exception e){
            error="Error de conexion,favor de intentar mas tarde";
        }
        return i;
    }
    /**
     * Modifica una idea publicada
     * @param idIdea contiene el identificador de la idea
     * @param solucion contiene la nueva solucion al problema
     * @return Idea es la idea modificada
     */
    public Idea modificarIdea (int idIdea, String solucion) {
        Idea i = null;
        String cadena;
        try{            
            DBConexion conexion = new DBConexion();
            conexion.abrirConexion();
            String sql = "UPDATE ideabd SET solucion = '" + solucion + "' WHERE ididea ="+idIdea+";";
            Statement stmt = conexion.con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            int jaja = stmt.executeUpdate(sql);
            sql = "select * from ideabd where ididea=" +idIdea+";";
            ResultSet resultado = stmt.executeQuery(sql);
            if(resultado.next()){
                i = new Idea(resultado.getInt("ididea"),resultado.getInt("idproblema"), resultado.getString("solucion"),resultado.getInt("idcreativo"));
            }
            conexion.cerrarConexion();
        } catch(Exception e){
            cadena="Error de conexion,favor de intentar mas tarde";
        }        
        return i;
    }
/**
 * Borra una idea de la base de datos
 * @param idIdea es el identificador de la idea
 */
    public void borrarIdea (int idIdea) {        
        String cadena;
        try{            
            DBConexion conexion = new DBConexion();
            conexion.abrirConexion();
            String sql = "delete from ideabd WHERE ididea ="+ idIdea+";";
            Statement stmt = conexion.con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            int jaja = stmt.executeUpdate(sql);            
            conexion.cerrarConexion();
        } catch(Exception e){
            cadena="Error de conexion,favor de intentar mas tarde";
        }        
    }
 /**
  * 
  * @param topico
  * @return
  */
    public Idea buscarIdeasoProblemas (String topico) {
        return null;
    }
   /**
    * Asigna al atributo solucion el valor sol
    * @param sol es la solucion
    */
    public void setSolucion (String sol) {
        solucion = sol;
    }
    /**
     * Devuelve la solucion
     * @return String
     */
    public String getSolucion () {
        return this.solucion;
    }
    /**
 * 
 * @param id
 */
    public void setIdIdea (int id) {
        idIdea =id;
    }
    /**
     * regresa el identificador de la idea
     * @return int
     */
    public int getIdIdea () {
        return this.idIdea;
    }
    /**
     * Asigna al atributo IdProblema el valor idProb
     * @param idProb es el identificador del problema
     */
    public void setIdProblema (int idProb) {
        IdProblema = idProb;
    }
    /**
     * Regresa el identificador del problema
     * @return int
     */
    public int getIdProblema () {
        return this.IdProblema;
    }
    /**
     * Asigna al atributo idCreativo el valor idCreat
     * @param idCreat
     */
    public void setIdCreativo (int idCreat) {
        idCreativo = idCreat;
    }
    /**
     * Regresa el identificador del creativo
     * @return int
     */
    public int getIdCreativo () {
        return this.idCreativo;
    }

}
